package com.epalmpay.service.management.impl;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.epalmpay.dto.system.ModuleInDTO;
import com.epalmpay.entity.GroupModule;
import com.epalmpay.entity.Module;
import com.epalmpay.mapper.GroupModuleMapper;
import com.epalmpay.mapper.ModuleMapper;
import com.epalmpay.service.management.IModuleService;

@Service("moduleService") 
public class ModuleServiceImpl implements IModuleService {

	@Autowired
    private ModuleMapper moduleMapper;
	@Autowired
    private GroupModuleMapper groupModuleMapper;
	
	@Override
	public List<Module> listGroupId(ModuleInDTO moduleInDTO) throws Exception {
		List<Module> list=null;
		if(moduleInDTO!=null){
			 list=moduleMapper.selectByPrimaryGroupId(moduleInDTO.getGroupId());
		}
		return list;
	}

	
	
	@Override
	public void edit(ModuleInDTO moduleInDTO) throws Exception {
		GroupModule groupModule=new GroupModule();
		GroupModule groupModule_f=new GroupModule();
		if(moduleInDTO!=null){
			byte bt =(byte)moduleInDTO.getModuleId().intValue();
			groupModule.setModuleId(bt);
			groupModule.setGroupId(moduleInDTO.getGroupId());
		}
		GroupModule group=groupModuleMapper.selectModelIdToGroupId(groupModule);
		//需要查询主目录是否添加 主目录未添加 新增主目录以及当前目录
		Module module=moduleMapper.selectByPrimaryKey(Long.valueOf(moduleInDTO.getModuleId()));
		//判断是否存在表关系，存在即删除该关系
		if(group!=null){
			//如果对应子模块不存在，删除父模块id
			List<GroupModule> groupModuleList=groupModuleMapper.selectExistCode(moduleInDTO.getGroupId(), moduleInDTO.getModuleId(), module.getfModuleId());
			if(groupModuleList.size()==0){
				byte bt =(byte)module.getfModuleId().intValue();
				groupModule_f.setModuleId(bt);
				groupModule_f.setGroupId(moduleInDTO.getGroupId());
				GroupModule group_f=groupModuleMapper.selectModelIdToGroupId(groupModule_f);
				groupModuleMapper.deleteByPrimaryKey(group_f.getId());
			}
			groupModuleMapper.deleteByPrimaryKey(group.getId());
		}else{
			byte bt_f =(byte)module.getfModuleId().intValue();
			groupModule_f.setModuleId(bt_f);
			groupModule_f.setGroupId(moduleInDTO.getGroupId());
			GroupModule group_f=groupModuleMapper.selectModelIdToGroupId(groupModule_f);
			if(group_f==null){
				groupModule_f.setGmtCreate(new Date()); 
				groupModule_f.setGmtModified(null);
				groupModuleMapper.insert(groupModule_f);
			}
			groupModule.setGmtCreate(new Date()); 
			groupModule.setGmtModified(null);
			groupModuleMapper.insert(groupModule);
			
		}
	}

}
